//
//---1.热门商品2.最新推荐，商品详情页面
<template>
  <div class="product-detail">
    <!-- 头部组件 -->
    <s-header :name="'商品详情'"></s-header>
    <!-- 商品详情 -->
    <div class="detail-content">
      <!-- 轮播图内容 -->
      <div class="detail-swipe-wrap">
        <van-swipe class="my-swipe" indicator-color="#1baeae">
          <van-swipe-item
            v-for="(item, index) in detail.goodsCarouselList"
            :key="index"
          >
            <img :src="prefix(item)" alt="" />
          </van-swipe-item>
        </van-swipe>
      </div>
      <!-- 商品信息 -->
      <div class="product-info">
        <div class="product-title">
          {{ detail.goodsName }}
        </div>
        <div class="product-desc">免邮费 顺丰快递</div>
        <div class="product-price">
          <span>¥{{ detail.sellingPrice }}</span>
          <!-- <span>库存203</span> -->
        </div>
      </div>
      <!-- 通过富文本编辑-商品的详情-->
      <div class="product-intro">
        <ul>
          <li>概述</li>
          <li>参数</li>
          <li>安装服务</li>
          <li>常见问题</li>
        </ul>
        <!-- 在后台编辑详情页的时候，是通过富文本编辑的，所以存储的数据都是带有 html 标签、 css 样式等，那么我们若是简单的用双大括号渲染数据的话，样式等属性是无法被渲染的，所以我们可以通过 v-html 去渲染带有 html 标签内容的值。 -->
        <div class="product-content" v-html="detail.goodsDetailContent"></div>
      </div>
    </div>
    <!-- 底部内容--客服、购物车、加入购物车、立即购买 -->
    <van-goods-action>
      <van-goods-action-icon icon="chat-o" text="客服" />
      <van-goods-action-icon
        icon="cart-o"
        :info="!count ? '' : count"
        @click="goTo()"
        text="购物车"
      />
      <van-goods-action-button
        type="warning"
        @click="addCart"
        text="加入购物车"
      />
      <van-goods-action-button
        type="danger"
        @click="goToCart"
        text="立即购买"
      />
    </van-goods-action>
  </div>
</template>

<script>
//商品详情数据接口
import { getDetail } from "../service/good";
import { addCart } from "../service/cart";
import sHeader from "@/components/SimpleHeader";
import { Toast } from "vant";
export default {
  data() {
    return {
      detail: {
        goodsCarouselList: [], //轮播图
      },
    };
  },
  components: {
    sHeader,
  },
  async mounted() {
    // 从路由中提取商品 id 作为获取商品详情的参数
    const { id } = this.$route.params;
    const { data } = await getDetail(id);
    this.detail = data;
  },
  methods: {
    goBack() {
      this.$router.go(-1);
    },
    // 点击跳转到购物车页面
    goTo() {
      this.$router.push({ path: "/cart" });
    },
    // 加入购物车
    async addCart() {
      const { data, resultCode } = await addCart({
        goodsCount: 1,
        goodsId: this.detail.goodsId,
      });
      if (resultCode == 200) Toast.success("添加成功");
      // actions.js 中的方法
      // 可以通过在页面中执行 this.$store.dispatch(xxx) 来执行
      this.$store.dispatch("updateCart");
    },
    // 立即购买
    async goToCart() {
      // 前往购物车页面，
      const { data, resultCode } = await addCart({
        goodsCount: 1,
        goodsId: this.detail.goodsId,
      });
      // 更新购物车中的数据
      this.$store.dispatch("updateCart");
      this.$router.push({ path: "/cart" });
    },
  },
  computed: {
    count() {
      //购物车的数据  自动计算 存储的vuex中
      return this.$store.state.cartCount;
    },
  },
};
</script>

<style lang="less">
@import "../common/style/mixin";
.product-detail {
  .detail-header {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 10000;
    .fj();
    .wh(100%, 44px);
    line-height: 44px;
    padding: 0 10px;
    .boxSizing();
    color: #252525;
    background: #fff;
    border-bottom: 1px solid #dcdcdc;
    .product-name {
      font-size: 14px;
    }
  }
  .detail-content {
    margin-top: 44px;
    .detail-swipe-wrap {
      .my-swipe .van-swipe-item {
        img {
          width: 100%;
          // height: 300px;
        }
      }
    }
    .product-info {
      padding: 0 10px;
      .product-title {
        font-size: 18px;
        text-align: left;
        color: #333;
      }
      .product-desc {
        font-size: 14px;
        text-align: left;
        color: #999;
        padding: 5px 0;
      }
      .product-price {
        .fj();
        span:nth-child(1) {
          color: #f63515;
          font-size: 22px;
        }
        span:nth-child(2) {
          color: #999;
          font-size: 16px;
        }
      }
    }
    .product-intro {
      width: 100%;
      ul {
        .fj();
        width: 100%;
        margin: 10px 0;
        li {
          flex: 1;
          padding: 5px 0;
          text-align: center;
          font-size: 15px;
          border-right: 1px solid #999;
          box-sizing: border-box;
          &:last-child {
            border-right: none;
          }
        }
      }
      .product-content {
        padding: 0 20px;
        img {
          width: 100%;
        }
      }
    }
  }
  .van-goods-action-button--warning {
    background: linear-gradient(to right, #6bd8d8, @primary);
  }
  .van-goods-action-button--danger {
    background: linear-gradient(to right, #0dc3c3, #098888);
  }
}
</style>
